package cn.ljp.userLike.controller.controller;

import cn.common.beancopy.util.BeanCopierUtil;
import cn.common.restresult.util.RestResult;
import cn.common.restresult.util.ResultEnum;
import cn.ljp.userLike.controller.dto.DeleteDto;
import cn.ljp.userLike.controller.dto.InsertAddDto;
import cn.ljp.userLike.controller.dto.SeleceDto;
import cn.ljp.userLike.controller.vo.DeleteVo;
import cn.ljp.userLike.controller.vo.InsertAddVo;
import cn.ljp.userLike.controller.vo.SeleceVo;
import cn.ljp.userLike.service.bo.DeleteBo;
import cn.ljp.userLike.service.bo.InsertAddBo;
import cn.ljp.userLike.service.bo.SeleceBo;
import cn.ljp.userLike.service.domain.DeleteDo;
import cn.ljp.userLike.service.domain.InsertAddDo;
import cn.ljp.userLike.service.domain.SeleceDo;
import cn.ljp.userLike.service.service.UserLikeSerice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * 描述类
 *      用户喜欢，添加喜欢，展示喜欢，闪出喜欢
 *
 * @ClassName userLikeControlle
 * @Description TODO
 * @Author liu'jia'peng
 * @Date 2021/7/17 14:44
 * @Version 1.0
 */
@RestController
@RequestMapping("/userLike")
public class UserLikeControlle {

    @Autowired
    private UserLikeSerice userLikeSerice;

    /**
     * 新增用户喜欢
     * 主要添加  商品spu_id  商品sku_id 以及用户 mi_id
     *
     */
    @PostMapping("/insertAdd")
    public RestResult<InsertAddVo> insertAdd(InsertAddDto insertAddDto){
        //最外面 留一个 token ； （这里不写，他们要我再写 ）
        //拷贝到 bo(token可以排出去) 到service执行
        InsertAddBo insertAddBo = BeanCopierUtil.copyObj(insertAddDto, InsertAddBo.class);
        InsertAddDo insertAddDo = userLikeSerice.insertAdd(insertAddBo);
        InsertAddVo insertAddVo = BeanCopierUtil.copyObj(insertAddDo, InsertAddVo.class);
        //返回token 并更新key时间（这里直接返回）没写更新key
        if (insertAddDo.getCode()=="000000"){
            return new RestResult<InsertAddVo>(ResultEnum.SUCCESS,insertAddVo);
        }
        return new RestResult<InsertAddVo>(ResultEnum.ERROR,insertAddVo);
    }

    /**
     *取消喜欢
     *
     */
    @PostMapping("/delete")
    public RestResult<DeleteVo> delete(DeleteDto deleteDto){
        //最外面 留一个 token ； （这里不写，他们要我再写 ）
        //拷贝 到 bo
        DeleteBo deleteBo = BeanCopierUtil.copyObj(deleteDto, DeleteBo.class);
        DeleteDo delete = userLikeSerice.delete(deleteBo);
        DeleteVo deleteVo = BeanCopierUtil.copyObj(deleteDto, DeleteVo.class);
        //返回token 并更新key时间（这里直接返回）没写更新key
        if (delete.getCode()=="000000"){
            return new RestResult<DeleteVo>(ResultEnum.SUCCESS,deleteVo);
        }
        return new RestResult<DeleteVo>(ResultEnum.ERROR,deleteVo);
    }


    /**
     * 展示喜欢商品
     * 需要查询三张表  所以 需要  商品spu_id  商品sku_id 以及用户 mi_id
     * 需要用户id
     */
    @PostMapping("/selece")
    public RestResult<List<SeleceDo>> selece(SeleceDto seleceDto){
        //最外面 留一个 token ； （这里不写，他们要我再写 ）
        SeleceBo seleceBo = BeanCopierUtil.copyObj(seleceDto, SeleceBo.class);
        List<SeleceDo> selece = userLikeSerice.selece(seleceBo);
        SeleceVo seleceVo = BeanCopierUtil.copyObj(selece, SeleceVo.class);
        return new RestResult<List<SeleceDo>>(ResultEnum.SUCCESS,selece);
    }
}

